<?php namespace Common\Model;
use Hdphp\Model\Model;
class Cate extends Model{
	//指定表名
	protected $table = 'category';
	
	//自动验证
	protected $validate = array(
		//array('字段名','验证方法','错误信息',验证条件,验证时间)
		array('cname','required','分类名称不能为空',3,3),
	);
	
	//处理“所属类”，除了顶级分类
	public function getNoTop($cid){
		//1.获取对应的wsshop_type_tid
		$tid=$this->where("cid={$cid}")->pluck('wsshop_type_tid');
		//2.获得自己子集的cid
		$cids=$this->getSon($this->get(),$cid);
		//3.压入自己的cid
		$cids[]=$cid;
		//4.排除自己cid的数据和子集的cid数据
		$where="cid NOT IN(" . implode(',',$cids) . ")";
		//返回对应的wsshop_type_tid
		return $this->where($where)->where("wsshop_type_tid={$tid}")->get();
		
	}
	
	/**
	 * 递归找当前下的子集 
	 * @param $data [全部数据]
	 * @param $cid [当前分类的cid]
	 * @return array [返回所有的子集] 
	 */
	public function getSon($data,$cid){
	
		//思路：循环当前所有的子集，看下是否它的子集的pid是否等于当前分类的cid，如果等于就压入并合并
		$temp=array();
		foreach ($data as $v) {
			//2.1如果当前分类下有子集
			if($v['pid']==$cid){
				$temp[]=$v['cid'];
				$temp=array_merge($temp,$this->getSon($data,$v['cid']));
			}
		}
		return $temp;
	}
	
	//修改分类
	public function editCate(){
		//1.ps:$this->create()可自动触发1自动验证；2自动完成；3传入数据;如果无数据传入就返回false
		if(!$this->create()) return false;
		//2.有数据传入就保存-一定要在editCate.php编辑分类页面加隐藏域
		$this->save();
		return true;
	}
	
	//添加分类-只能添加顶级分类
	public function store(){
		//1.ps:$this->create()可自动触发1自动验证；2自动完成；3传入数据，如果无数据传入就返回false
		if(!$this->create()) return false;
		//2.如果有数据传入就添加并返回true
		$this->add();
		return true;
	}
	
	
}
 ?>